import math

def days_to_grow(n, M):
    # 计算平面内的最大边长
    max_side = int(math.sqrt(n)) + 1
    # 初始化每个点上的草的数量为0
    grass = [[0] * max_side for _ in range(max_side)]
    
    # 遍历每一天，直到至少一个点出现M种草
    day = 0
    while True:
        day += 1
        # 遍历平面上的每个点
        for i in range(max_side):
            for j in range(max_side):
                # 如果该点上的草的种类数量小于M，则在该点周围的8个格子上长出新的草
                if len(set(grass[i][j])) < M:
                    for dx in [-1, 0, 1]:
                        for dy in [-1, 0, 1]:
                            ni, nj = i + dx, j + dy
                            if 0 <= ni < max_side and 0 <= nj < max_side:
                                grass[ni][nj].append(day)
        
        # 检查是否有至少一个点上的草的种类数量达到了M
        for i in range(max_side):
            for j in range(max_side):
                if len(set(grass[i][j])) >= M:
                    return day

# 测试
n = 2  # 平面内的点数
M = 2   # 需要出现的草的种类数量
result = days_to_grow(n, M)
print(f"平面内至少一个点出现{M}种草需要{result}天")
